home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / lib / c / crt / sun3.md / gstart.s < prev    next >
Text File  |  1989-02-25  |  2KB  |  57 lines

  1. |*
  2. |* gstart.s --
  3. |*
  4. |*      Program entry point for profiled programs.  This is the
  5. |*      default entry point for programs compiled with the `-pg'
  6. |*      option to the C compiler.
  7. |*
  8. |* Copyright 1966, 1988 Regents of the University of California
  9. |* Permission to use, copy, modify, and distribute this
  10. |* software and its documentation for any purpose and without
  11. |* fee is hereby granted, provided that the above copyright
  12. |* notice appear in all copies.  The University of California
  13. |* makes no representations about the suitability of this
  14. |* software for any purpose.  It is provided "as is" without
  15. |* express or implied warranty.
  16. |*
  17.  
  18.     .data
  19.     .asciz "$Header$"
  20.     .even
  21.  
  22.     .text
  23.     .long    0
  24.     trap    #15        | Processes starting off in debug mode will
  25.                 |     start here.
  26.     .globl    gstart
  27. gstart:
  28.     movl    sp@,d2        | argc
  29.     lea        sp@(4),a3    | argv
  30.     movl    d2, d0        | pass argc + 1 as one param 
  31.     addql    #1, d0          |      to lmult
  32.     movl    #4, d1        | want 4 * (argc + 1)
  33.     jsr      lmult        | 
  34.     movl        a3, d1        | take argv and ... 
  35.     addl        d0, d1        | ... go past it by (argc + 1) 4-byte fields
  36.     movl    d1,_environ    | set the global _environ variable
  37.     movl    d1,sp@-        | push envp
  38.     movl    a3,sp@-        | push argv
  39.     movl    d2,sp@-        | push argc
  40.     lea        0,a6        | stack frame link 0 in main -- for dbx
  41. |-------
  42.     pea         _etext
  43.     pea         0x2000          | Start of text segment
  44.     jsr         _monstartup     | monstartup(0x2000, etext)
  45.     addql       #8,sp
  46.     pea         __mcleanup
  47.     jsr         _atexit         | atexit(_mcleanup)
  48.     addql       #4,sp
  49.     clrl        _errno          | errno = 0
  50. |-------
  51.     jsr        _main        | main(argc, argv, envp)
  52.     addw    #12,sp
  53.     movl    d0,sp@-
  54.     jsr        _exit        | exit( ... )
  55.     addql    #4,sp
  56.     rts
  57.